From: Keir Fraser Date: Thu, 4 Jun 2009 09:40:24 +0000 (+0100) Subject: xm, xend: xen-api: DPCI.get_hotplug_slot() returns a decimal X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~13807 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https://%22%22/%22http:/www.example.com/cgi/%22https:/%22%22?a=commitdiff_plain;h=a5582cb100e63dd7b175eed0cfa248169bdc532c;p=xen.git xm, xend: xen-api: DPCI.get_hotplug_slot() returns a decimal xm uses the following code to read pci information using Xen API: ppci_ref =3D server.xenapi.DPCI.get_PPCI(dpci_ref) ppci_record =3D server.xenapi.PPCI.get_record(ppci_ref) dev =3D { "domain": int(ppci_record["domain"]), "bus": int(ppci_record["bus"]), "slot": int(ppci_record["slot"]), "func": int(ppci_record["func"]), "vslot": int(server.xenapi.DPCI.get_hotplug_slot(dpci_ref)) } As the domain, bus, slot and func values are returned as string representations of decimal, it makes sense for get_hotplug_slot() to also return string representations of decimal. As it is, the int() conversion will break cause xm to fail with an error if the vslot is in the range 0xa-0xf or 0x1a-0x1f. $ xm pci-list debian Error: Invalid argument. And the int() conversion will return the wrong value if the vslot is in the range 0x10-0x19. This patch also alters XendDPCI to store hotplug_vslot as an integer rather than a string. This is consitent with the way other values are stored inside XendDPCI. get_hotplug_slot() returning a string is not consistent with other calls inside XendDPCI, which return integers. Signed-off-by: Simon Horman --- diff --git a/tools/python/xen/xend/XendDPCI.py b/tools/python/xen/xend/XendDPCI.py index 0a564d7c23..24fc6b23fe 100644 --- a/tools/python/xen/xend/XendDPCI.py +++ b/tools/python/xen/xend/XendDPCI.py @@ -119,7 +119,7 @@ class XendDPCI(XendBase): self.VM = record['VM'] self.PPCI = record['PPCI'] - self.hotplug_slot = record['hotplug_slot'] + self.hotplug_slot = int(record['hotplug_slot'], 16) if 'options' in record.keys(): self.options = record['options'] @@ -153,7 +153,7 @@ class XendDPCI(XendBase): return self.PPCI def get_hotplug_slot(self): - return self.hotplug_slot + return "%d" % self.hotplug_slot def get_options(self): return self.options